package com.lpit.crawler;

import com.lpit.crawler.parse.ParseItem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.stream.Collectors;

@Component
public class CsdnDataProcess extends AbstractDataProcess{

   @Autowired
   private CrawlerConfig crawlerConfig;

   /*抓取下来的url列表*/
    @Override
    public List<ParseItem> parseRequestData(ProcessFlowData processFlowData) {
        List<ParseItem> parseItems = null;

        List<String> initCrawlerUrlList = crawlerConfig.getInitCrawlerUrlList();

        if (null!=initCrawlerUrlList && initCrawlerUrlList.size() > 0){

            parseItems=initCrawlerUrlList.stream().map(url -> {
                /*创建一个CrawlerParseItem对象，用于存储解析后的数据。*/
                CrawlerParseItem crawlerParseItem = new CrawlerParseItem();

                /*对每个URL添加一个随机数参数rnd，用于多次访问。*/
                url = url + "?rnd=" + System.currentTimeMillis();

                /*设置CrawlerParseItem的URL、文档类型和处理类型属性。*/
                crawlerParseItem.setUrl(url);
                crawlerParseItem.setDocumentType(CrawlerEnum.DocumentType.INIT.name());
                crawlerParseItem.setHandelType(processFlowData.getHandelType().name());

                /*返回构建好的 crawlerParseItem 对象*/
                return crawlerParseItem;

                /*将转换后的 CrawlerParseItem 对象收集到一个新的列表中，并将其赋值给 parseItems 变量*/
            }).collect(Collectors.toList());

            /**
             * for循环方式操作，更容易理解
             */
//            for (String url : initCrawlerUrlList) {
//                CrawlerParseItem crawlerParseItem = new CrawlerParseItem();
//                url = url + "?rnd=" + System.currentTimeMillis();
//
//                crawlerParseItem.setUrl(url);
//                crawlerParseItem.setDocumentType(CrawlerEnum.DocumentType.INIT.name());
//                crawlerParseItem.setHandelType(processFlowData.getHandelType().name());
//
//                parseItems.add(crawlerParseItem);
//            }

        }

        return parseItems;
    }


}
